草庐IT

Java Event-Dispatching Thread 解释

全部标签

c++ eclipse wrong错误解释

我在使用EclipseC++时遇到问题。我的项目编译并运行,但eclipse(juno)一直说有数千个错误。例如,我的代码中有一个函数SetRun,而eclipse提到了这个错误:“调用了无效参数‘Candidatesare:voidSetRun(?)’”,而SetRun的类型为staticvoidSetRun(uint32_trun);我有很多类似的错误,其中eclipse似乎不理解函数的类型并放置了一个“?”相反。我也有很多这样的错误:“无法解析符号‘*’。”我认为这都是同一个问题的一部分。我该怎么做才能让eclipse停止告诉我这些错误? 最佳答案

c++ - UTF-8 与 cpp 案例所需的解释

我在Windows764位上安装了MicrosoftVisualStudio2010。(在项目属性中,“字符集”设置为“未设置”,但是每个设置都会导致相同的输出。)源代码:usingnamespacestd;charconstcharTest[]="árvíztűrőtükörfúrógépÁRVÍZTŰRŐTÜKÖRFÚRÓGÉP\n";cout*1:包含windows.h会把事情搞砸,所以我从一个单独的cpp中包含它。编译后的二进制文件包含作为正确UTF-8字节序列的字符串。如果我使用chcp65001将控制台设置为UTF-8并发出typemain.cpp,字符串将正确显示。测试(

c++ - 我可以在布局兼容的标准布局类型之间合法地重新解释_cast 吗?

我正在写一个类,假设答案是Areenumerationtypeslayoutcompatiblewiththeirunderlyingtype?是"is",是布局兼容的structkevent但使用enumclasses用于filter、flags等.为相关领域提供适当的基础类型。它也是标准布局(字段都是private并且它们本身都是标准布局,没有virtual成员,没有基类)。根据我对n3690的阅读,我可以确定我的类和structkevent具有相同的值表示,但我在标准中看不到任何允许我这样做的内容reinterpret_cast在它们之间,尽管这似乎是对“值表示”的合理解释。这在

c++ - 用 C++ 编写 Haskell 解释器(使用 ghc 或 hugs 作为库)

我正在编写一个需要解释和评估haskell代码的C++应用程序。此代码在编译时是未知的,而是由用户提供的。有没有办法将haskell编译器/解释器(如GHCi或hugs)用作库?我找到了FFI,但这似乎只适用于编译时已知的haskell代码。我找到了GHCAPI和提示,但它们似乎只在我想从haskell中解释haskell代码时才起作用。 最佳答案 我建议不要使用GHCapi,而是绑定(bind)到Hint对于这种特殊方法,它只是GHCapi的简化包装器。我推荐这个的原因是因为GHCapi的学习曲线有点陡峭。但无论如何,就像我在评论

c++ - 函数调用中临时构造被解释为声明

最近我遇到了一个问题,它以某种方式(但仅以某种方式)对我有意义。它基于将临时构造解释为单个(!)构造函数参数的声明。请查看下面的最小示例。#includeclassFoo0{public:Foo0(inta){};voiddoStuff(){std::cout我已经读过这样的表达:Foo(a);被解释(如果有标准构造函数)作为a的声明。这是有道理的,而且完全没问题,因为您可以只使用{}括号使构造显式化。但我不明白的是:为什么bar0的构建有问题?所有Foo都没有标准的构造函数。因此,将Foo0(x)之类的内容解释为x的声明是没有意义的。为什么bar1和bar2的构造有效?对我来说很明显

C++ lambda 表达式 - 编译器如何解释它们?

我刚刚开始学习C++11中的新功能。我在C++Primer(StanleyLippman)中阅读了有关lambda的内容,并用它们进行了试验。我尝试了以下代码:autofunc()->int(*)(){//intc=0;return[]()->int{return0;};}intmain(){autop=func();}这段代码编译得很好。所以我想没有任何捕获的lambda只是由编译器生成为普通函数,我们可以使用普通函数指针指向它们。现在我更改了代码以使用捕获:autofunc()->int(*)(){intc=0;return[=]()->int{returnc;};}intmain

此 delete[] 错误的 C++ 解释?

在对项目进行大量更改后,我创建了一个错误,花了我很长时间才找到。我有一个包含动态分配数组的类。然后我创建了一个此类的动态数组。然后我可以删除[]那个数组。但是,如果我在删除之前替换数组中的项目,则会导致错误。在Debug模式下,它给出来自dbgdel.cpp的断言消息“表达式:_BLOCK_TYPE_IS_VALID(pHead->nBlockUse)”。这里有一个小程序来演示。classSomeClass{public:int*data;SomeClass(){data=nullptr;}SomeClass(intnum){data=newint[num];}~SomeClass()

c++ - 复制和修改 std::strings 时无法解释的差异

在下面的代码中,“情况1”在所有情况下都按预期工作编译器经过测试,但是“情况2”似乎表现不同基于所使用的编译器。例如,MSVC让sit1和sit2产生相同的结果,但是使用gcc/clang和libstdc++时,修改发生在原始字符串和它的拷贝(有点像COW字符串)即使我正在使用C++11开关进行构建。#include#includeintmain(){//situation1{std::stringx0="12345678";std::stringx1=x0;char*ptr=&x0[0]+3;(*ptr)='';std::cout(x0.data()+3);(*ptr)='';std

c++ - 无法解释的 C++ 默认 int 值

我一直在重构一些代码,我注意到一些涉及未初始化的int数组的奇怪行为:intarr[ARRAY_SIZE];我设置了一个断点,似乎所有值都默认为-858993460。这个值有什么特别之处吗?知道为什么它们不默认为0吗? 最佳答案 在C++中没有“默认值”——变量和数组元素,在被您的代码初始化之前,将包含内存中最后的任何内容。换句话说,当这些变量被声明时,内存中就预留了一block空间供它们使用。上次使用内存时留下的内存位仍然存在,导致您的变量最初看起来好像充满了“垃圾”。内存并不总是立即清零的原因是速度——将内存清零需要时间。您可以

c++ - 从指针 vector 到 const 指针 vector 的重新解释是否安全?

这种转换类型安全吗vectora;constvector&b=reinterpret_cast&>(a);静态转换显然在这种情况下不起作用,因为模板参数正在改变。但是通过重新解释转换,我只是将常量添加到本质上相同的类型。那么对于所有实际用途来说这应该是安全的吗? 最佳答案 就像使用reinterpret_cast将引用转换为不相关的类型一样,它会产生未定义的行为,因此是不安全的,除非您将“安全”定义为“在我的编译器上工作”。 关于c++-从指针vector到const指针vector的重